之前的优化只是在线性/树状图上收集信息。当控制流涉及环时,数据流分析才能为我们收集信息。

支配集

求支配集实际上是解如下方程: $$ Dom(n) = {n} \bigcup (\bigcap_{m\in preds(n)} Dom(m)) $$ 初始条件为入口节点$Dom(n_0)={n_0}$,$\forall n \neq n_0, Dom(n) = N$,$N$是图中的所有节点。

因为每个节点的信息只需要前驱的信息进行计算,因此这是一个前向数据流问题。通过观察,可以证明每个节点的Dom集在计算的过程中不会增大,且大小有限。因此在有限的计算中一定能到达不动点。并且通过(复杂的)数学可以证明这样的不动点是唯一的,也就是解唯一。前向数据流分析可以使用逆后序(ROP)计算。

活动变量分析

如果存在一条路径,从p到v的某个使用点。则称v在p点活动。活动变量的一个应用是未初始化变量分析,如果一个变量在$n_0$活动,则其一定存在未初始化使用。

可达性

如果存在一条路径,从变量v的一个定义到某点p,且这条路径上v没有被重新定义,则称这个定义可以到达p